﻿using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Maestro_Proveedores.evaluacionDeDesempeno.indicadores
{
    /// <remarks>
    /// <para>El indicador tiene como objetivo evaluar la seguridad y buen trato al medio ambiente por el contratista.</para>
    /// </remarks>
    class SeguridadYMedioAmbiente : Indicador
    {
        _Maestro_Proveedores_CORPORATIVADataSetTableAdapters.evalDesempenoServiciosTableAdapter evalDesempenoServiciosTableAdapter = null;
        /// <summary>
        /// Cuando se crea una nueva instancia del indicador, se incializan todas sus variables y propiedades. Tanto las propias como las herededas de la calse Indicador
        /// </summary>
        public SeguridadYMedioAmbiente()
        {
            this.Peso = 0.17d * 0.70d; //--- las sumatoria de los indicadores de cumplimientoServicio, calidadServicio y Seg. y med. ambiente corresponden al 70% de la evaluacion de desempeño, para mayor informacion, debe remitirse al documento base dal sistema de gestion de proveedores  
            this.TipoIndicador = Enums.TipoIndicador.Servicio;
            this.evalDesempenoServiciosTableAdapter = new _Maestro_Proveedores_CORPORATIVADataSetTableAdapters.evalDesempenoServiciosTableAdapter();
        }
        /// <summary>
        /// Redefinicion del metodo toString()
        /// </summary>
        /// <returns>Nombre Completo del presente indicador</returns>
        public override string ToString()
        {
            return "Seguridad y medio ambiente";
        }
        /// <summary>
        /// redefinición del metodo Calcular(), declarado en la clase padre Indicador como un metodo abstracto (se debe redefinir obligatoriamente en cualquier clase que herede de la clase Indicador)
        /// </summary>
        /// <returns></returns>
        protected override bool calcular()
        {
            try
            {
                //--- hago los calculos y operaciones aritmeticas
                string temp = string.Empty;
                try
                {
                    temp = this.evalDesempenoServiciosTableAdapter.Scalar_calificacionPorcentaje(this.registroProveedor.id_proveedor, this.ToString(), this.FechaInferior, this.FechaSuperior).ToString();
                }
                catch (Exception)
                {
                    //--- esta excepcion se dispara cuando no hay registros para este indicador
                    return false;
                }
                if (temp.Equals(string.Empty))
                {
                    return false;
                }
                else
                {
                    //--- Guardo el resultado del indicador
                    this.Resultado = double.Parse(temp) * 100;
                    this.PorcentajeEvaluacion = this.Resultado;
                }
            }
            catch (Exception ex)
            {
                Maestro_Proveedores.herramientas.MessageException.show(ex);
                return false;
            }
            return true;
        }
    }
}
